Infiltration Module

History

current version 1.1 - 16th June 2016

version date comment
1.0 28/May/2014 Original code
1.1 16/Jun/2016 added CurveNumber function

License

license: GNU GPL http://www.gnu.org/licenses/

Module Description

Implement models to compute infiltration rate:



Variables

Type Visibility Attributes Name Initial
integer(kind=short), public, parameter :: GREEN_AMPT = 3

Green Ampt

integer(kind=short), public, parameter :: PHILIPEQ = 2

Philip's equation

integer(kind=short), public, parameter :: ROSS_BC = 4

Richards equations solution by Ross with Broooks and Corey SWRC

integer(kind=short), public, parameter :: ROSS_VG = 5

Richards equations solution by Ross with Van Genuchten SWRC

integer(kind=short), public, parameter :: SCS_CN = 1

Soil Conservation Service Curve Number

type(grid_real), public :: abstractionRatio

initial abstraction ratio of the SCS-CN [-] default = 0.2

type(grid_real), public :: cuminf

cumulative infiltration [m]

type(grid_real), public :: curveNumber

curve number [-]

type(grid_real), public :: fieldCapacity

field capacity [m3/m3]

integer(kind=short), public :: infiltrationModel
type(grid_real), public :: ism

soil moisture at the beginning of storm event [m3/m3]

type(grid_real), public :: ksat

saturated hydraulic conductivity [m/s]

type(grid_real), public :: phy

wetting front soil suction head [m]

type(grid_real), public :: psdi

pore size distribution index by Brooks and Corey [-]

type(grid_real), public :: psic

bubbling pressure, air entry value [m]

type(grid_real), public :: raincum

cumulated gross rainfall [mm]

type(grid_real), public :: sEff

effective soil retention capacity [mm]

integer(kind=short), public :: soilDivisions

number of subdivisions of soil layer

type(grid_real), public :: storativity

storativity of the SCS-CN [mm], default = 254

type(grid_real), public :: thetar

residual water content [m3/m3]

type(grid_real), public :: thetas

saturated water content [m3/m3]

type(grid_real), public :: wiltingPoint

wilting point [m3/m3]

integer(kind=short), private, parameter :: FROM_DB = 2
integer(kind=short), private, parameter :: FROM_FILES = 1
type(grid_real), private :: ksatMatrix

saturated conductivity of soil "matrix",

type(grid_real), private :: mvg

m shape parameter for Van Genuchten SWRC [-]

type(grid_real), private :: nvg

n shape parameter for Van Genuchten SWRC [-]

integer(kind=short), private :: parameterAssigningMethod

1 = read each parameter from single file; 2 = assign parameter from soil type map

type(grid_real), private :: ptort

tortuosity index [-]

type(grid_real), private :: smax

maximum soil storage [m] DEBUG non so chi usa questo parametro

type(grid_integer), private :: soilTypeMap
type(SoilType), private, ALLOCATABLE :: soils(:)

Functions

public function GreenAmpt(storm, rain, ksat, theta, thetas, thetar, phy, itheta, dt, cuminf) result(inf)

calculates the actual rate of infiltration (m/s) according to Green-Ampt equation for unsteady rainfall.

Read more…

Arguments

Type IntentOptional Attributes Name
integer(kind=short), intent(in) :: storm

when = 1 first steo of storm event

real(kind=float), intent(in) :: rain

rainfall rate (m/s)

real(kind=float), intent(in) :: ksat

saturated hydraulic conductivity (m/s)

real(kind=float), intent(in) :: theta

volumetric water content (m3/m3)

real(kind=float), intent(in) :: thetas

saturated volumetric water content (m3/m3)

real(kind=float), intent(in) :: thetar

residual volumetric water content (m3/m3)

real(kind=float), intent(in) :: phy

suction head across the wetting front (m)

real(kind=float), intent(in) :: itheta

initial soil moisture

integer(kind=short), intent(in) :: dt

time step (s)

real(kind=float), intent(inout) :: cuminf

cumulative infiltration (m)

Return Value real(kind=float)

infiltration rate (m/s)

public function Philip(rain, psic, ksat, theta, thetas, thetar, psdi, itheta, dt, cuminf) result(inf)

calculates the actual rate of infiltration (m/s) according to Philip's equation. Use time compression approximation.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: rain

rainfall rate (m/s)

real(kind=float), intent(in) :: psic

bubbling pressure (m)

real(kind=float), intent(in) :: ksat

saturated hydraulic conductivity (m/s)

real(kind=float), intent(in) :: theta

volumetric water content (m3/m3)

real(kind=float), intent(in) :: thetas

saturated volumetric water content (m3/m3)

real(kind=float), intent(in) :: thetar

residual volumetric water content (m3/m3)

real(kind=float), intent(in) :: psdi

Brooks & Corey pore size distribution index (-)

real(kind=float), intent(in) :: itheta

initial soil moisture

integer(kind=short), intent(in) :: dt

time step (s)

real(kind=float), intent(inout) :: cuminf

cumulative infiltration (m)

Return Value real(kind=float)

infiltration rate (m/s)

public function SCScurveNumber(rain, raincum, c, s, dt, runoff) result(inf)

calculates the actual rate of infiltration (m/s) according to Curve Number model modified for continuous simulation

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: rain

rainfall rate (m/s)

real(kind=float), intent(inout) :: raincum

cumulated rainfall from start of storm (mm) is used and updated to be ready for the following step

real(kind=float), intent(in) :: c

initial abstraction ratio (-)

real(kind=float), intent(in) :: s

soil retention capacity (mm)

integer(kind=short), intent(in) :: dt

time step (s)

real(kind=double), intent(out) :: runoff

runoff rate (m/s)

Return Value real(kind=float)

infiltration rate (m/s)


Subroutines

public subroutine InfiltrationInit(inifile, soilMoisture, soilDepth)

Initialize evapotranspiration computation

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: inifile
type(grid_real), intent(in) :: soilMoisture
type(grid_real), intent(in) :: soilDepth

public subroutine Sat2scn(cn2, s0, soilsat, scn)

compute actual soil retention capacity S of the SCS-CN method
given soil saturation

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: cn2

curve number for mean soil moisture

real(kind=float), intent(in) :: s0

storativity (mm)

real(kind=float), intent(in) :: soilsat

soil saturation

real(kind=float), intent(out) :: scn

soil retention capacity [mm]

private subroutine ReadSoilTypes(inifile)

read soil types from external file

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: inifile

stores configuration information

private subroutine SetParametersFromDB(iniDB, model)

set parameter maps from soil database

Arguments

Type IntentOptional Attributes Name
type(IniList), intent(in) :: iniDB
integer(kind=short), intent(in) :: model

private subroutine SetParametersFromFile(iniDB, model)

set parameter maps from separate files

Arguments

Type IntentOptional Attributes Name
type(IniList), intent(in) :: iniDB
integer(kind=short), intent(in) :: model